﻿//using System;
//using System.Collections.Generic;
//using System.Linq;
//using System.Text;
//using Pocos = GigaMatchTestPocos;
//using System.Data.Entity.Infrastructure;
//using System.Data;
//using System.Data.Entity;

//namespace GigaMatchTestBiz
//{
//    public class DataSvc
//    {
//        public static object GetContext()
//        {
//            var ret = new GigaMatchTestPocos.GigaMatchTestEntities();
//            ret.Configuration.LazyLoadingEnabled = false;
//            ret.Configuration.AutoDetectChangesEnabled = false;

//            return ret;
//        }

//        public static void SaveChanges(object context)
//        {
//            ((GigaMatchTestPocos.GigaMatchTestEntities)context).SaveChanges();
//        }

//        public static List<Pocos.Person> GetAllPersons()
//        {
//            var context = new GigaMatchTestPocos.GigaMatchTestEntities();
//            context.Configuration.LazyLoadingEnabled = false;
//            context.Configuration.AutoDetectChangesEnabled = false;

//            var ret = context.Persons.ToList();
//            ret.ForEach(r => r.MarkGraphClean());
//            var oc = ((IObjectContextAdapter)context).ObjectContext;

//            foreach (var rec in ret)
//            {
//                rec.MarkGraphClean();
//                oc.Detach(rec);
//            }


//           // DbContext ctxt = (DbContext)context;
//          //var x =   ctxt.Set<Pocos.Person>().w.Collection<Pocos.Person>().Query;


//            return ret;
//        }

//        public static void DeletePerson(Pocos.Person person)
//        {
//            var context = new GigaMatchTestPocos.GigaMatchTestEntities();
//            context.Entry(person).State = EntityState.Deleted;
//            context.SaveChanges();
//        }

//        public static List<Pocos.Skill> GetAllSkills()
//        {
//            var context = new GigaMatchTestPocos.GigaMatchTestEntities();
//            context.Configuration.LazyLoadingEnabled = false;
//            context.Configuration.AutoDetectChangesEnabled = false;

//            var ret = context.Skills.ToList();
//            ret.ForEach(r => r.MarkGraphClean());
//            var oc = ((IObjectContextAdapter)context).ObjectContext;

//            foreach (var rec in ret)
//            {
//                rec.MarkGraphClean();
//                oc.Detach(rec);
//            }

//            return ret;
//        }

//        public static void DeleteSkill(Pocos.Skill skill)
//        {
//            var context = new GigaMatchTestPocos.GigaMatchTestEntities();
//            context.Entry(skill).State = EntityState.Deleted;
//            context.SaveChanges();
//        }

//        public static Pocos.Person GetPerson(int personId)
//        {
//            var context = new GigaMatchTestPocos.GigaMatchTestEntities();
//            context.Configuration.LazyLoadingEnabled = false;
//            context.Configuration.AutoDetectChangesEnabled = false;

//            var person = context.Persons.Include("Skills").Where(p => p.PersonId == personId).FirstOrDefault();
//            person.MarkGraphClean();
//            //person.IsDirty = false;

//            var oc = ((IObjectContextAdapter)context).ObjectContext;

//            oc.Detach(person);

//            return person;
//        }

//        public static void SavePerson(Pocos.Person person)
//        {
//            var context = new GigaMatchTestPocos.GigaMatchTestEntities();

//            //context.Entry(person).

//            var key = ((IObjectContextAdapter)context).ObjectContext.CreateEntityKey("Persons", person);

//            if (int.Parse(key.EntityKeyValues[0].Value.ToString()) == 0)
//            {
//                context.Entry(person).State = EntityState.Added;

//                foreach (var skill in person.Skills)
//                {
//                    SaveSkill(skill);
//                }
//            }
//            else
//            {
//                //context.Persons.Attach(person);
//                if (person.IsDirty)
//                {
//                    context.Entry(person).State = EntityState.Modified;
//                }
//                //context.ChangeTracker.DetectChanges();
//            }

//            context.SaveChanges();

//        }

//        public static void SaveSkill(Pocos.Skill skill)
//        {
//            var context = new GigaMatchTestPocos.GigaMatchTestEntities();

//            //context.Entry(person).

//            var key = ((IObjectContextAdapter)context).ObjectContext.CreateEntityKey("Skills", skill);


//            if (int.Parse(key.EntityKeyValues[0].Value.ToString()) == 0)
//            {
//                context.Entry(skill).State = EntityState.Added;
//            }
//            else
//            {
//                if (skill.IsDirty)
//                {
//                    context.Entry(skill).State = EntityState.Modified;
//                }
//            }

//            //context.SaveChanges();

//        }

//    }
//}
